#include "tankerwidget.h"
#include "ui_tankerwidget.h"

TankerWidget::TankerWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::TankerWidget)
{
    ui->setupUi(this);

    initGunGroup();
    foreach(QWidget* gun, mapGunWidget)
    {
        gun->setVisible(false);
    }
}

TankerWidget::~TankerWidget()
{
    delete ui;
}

/*************************************************
函数功能: setTankerNo
函数描述: 设置加油机编号
输入参数: iTankerNo, 加油机编号，与界面显示内容对应
输出参数: 无
返 回 值: 无
 其  他 : 无
*************************************************/
void TankerWidget::setTankerNo(int iTankerNo)
{
    m_iTankerNo = iTankerNo;
    QString strTankerTitle = QString(tr("%1#号加油机")).arg(m_iTankerNo);
    ui->TankerNo->setText(strTankerTitle);
}

int TankerWidget::getTankerNo()
{
    return m_iTankerNo;
}

/*************************************************
函数功能: setGunVisable
函数描述: 设置加油枪是否显示
输入参数: index，加油枪序号(1~8); bState,是否显示
输出参数: 无
返 回 值: 无
 其  他 : 无
*************************************************/
void TankerWidget::setGunVisable(int index, bool bState)
{
    mapGunWidget[index]->setVisible(bState);
}

/*************************************************
函数功能: setGunTitle
函数描述: 设置加油枪名称
输入参数: index，加油枪序号(1~8); iGunIdx,加油枪序号
输出参数: 无
返 回 值: 无
 其  他 : 无
*************************************************/
void TankerWidget::setGunTitle(int index, int iGunIdx)
{
    QString strGunTitle;
    strGunTitle.setNum(iGunIdx);
    mapGunNo[index]->setText(strGunTitle);
}

/*************************************************
函数功能: setOilState
函数描述: 设置加油状态
输入参数: index，加油枪序号(1~8); iState,当前加油状态
输出参数: 无
返 回 值: 无
 其  他 : 无
*************************************************/
void TankerWidget::setOilState(int index, int iState)
{
    switch (iState) {
    case GUN_OFFLINE:
        mapOilState[index]->setStyleSheet("border-image: url(:/MyParts/images/offline.png);");
        break;
    case GUN_ONLINE:
        mapOilState[index]->setStyleSheet("border-image: url(:/MyParts/images/online.png);");
        break;
    case GUN_FUELING:
        mapOilState[index]->setStyleSheet("border-image: url(:/MyParts/images/fueling.png);");
        break;
    case GUN_PREWARNING:
        mapOilState[index]->setStyleSheet("border-image: url(:/MyParts/images/prewarning.png);");
        break;
    case GUN_WARNING:
        mapOilState[index]->setStyleSheet("border-image: url(:/MyParts/images/warning.png);");
        break;
    default:
        mapOilState[index]->setStyleSheet("border-image: url(:/MyParts/images/offline.png);");
        break;
    }

}

/*************************************************
函数功能: addGun
函数描述: 添加一台加油枪
输入参数: index，加油枪序号(1~8);
         iGunIdx,加油枪序号,加油枪状态
         iState,加油枪状态
输出参数: 无
返 回 值: 无
 其  他 : 无
*************************************************/
void TankerWidget::addGun(int index, int iGunIdx, int iState)
{
    setGunVisable(index, true);
    setGunTitle(index, iGunIdx);
    setOilState(index, iState);
}

/*************************************************
函数功能: initGunGroup
函数描述: 初始化加油机控件映射
输入参数: 无
输出参数: 无
返 回 值: 无
 其  他 : 无
*************************************************/
void TankerWidget::initGunGroup()
{
    mapGunWidget[1]    = ui->leftGun1;
    mapGunNo[1]        = ui->GunNo1;
    mapOilState[1]     = ui->OilState1;

    mapGunWidget[2]    = ui->leftGun2;
    mapGunNo[2]        = ui->GunNo2;
    mapOilState[2]     = ui->OilState2;

    mapGunWidget[3]    = ui->leftGun3;
    mapGunNo[3]        = ui->GunNo3;
    mapOilState[3]     = ui->OilState3;

    mapGunWidget[4]    = ui->leftGun4;
    mapGunNo[4]        = ui->GunNo4;
    mapOilState[4]     = ui->OilState4;

    mapGunWidget[5]    = ui->rightGun1;
    mapGunNo[5]        = ui->GunNo5;
    mapOilState[5]     = ui->OilState5;

    mapGunWidget[6]    = ui->rightGun2;
    mapGunNo[6]        = ui->GunNo6;
    mapOilState[6]     = ui->OilState6;

    mapGunWidget[7]    = ui->rightGun3;
    mapGunNo[7]        = ui->GunNo7;
    mapOilState[7]     = ui->OilState7;

    mapGunWidget[8]    = ui->rightGun4;
    mapGunNo[8]        = ui->GunNo8;
    mapOilState[8]     = ui->OilState8;
}

//绘制
void TankerWidget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event)

    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
